package com.syh.jn.scm.domain.supplier.repository.base;

import com.syh.core.ddd.infrastructure.repository.AggregateRepository;
import com.syh.jn.scm.domain.supplier.entity.base.logistics.Logistics;
import com.syh.jn.scm.domain.supplier.entity.base.logistics.LogisticsAddress;
import com.syh.jn.scm.domain.supplier.entity.base.logistics.LogisticsTruck;
import com.syh.jn.scm.dto.supplier.base.logistics.logisticsAddress.LogisticsAddressVo;
import com.syh.jn.scm.dto.supplier.base.logistics.logisticsTruck.LogisticsTruckVo;

import java.util.List;

public interface LogisticsRepository extends LogisticsReadRepository, AggregateRepository<Logistics, Long> {
  /**
   * 批量保存物流服务地址
   * @param addressList
   */
  void batchSaveAddress(List<LogisticsAddress> addressList);

  /**
   * 批量修改物流服务地址
   * @param addressList
   */
  void batchModifyAddress(List<LogisticsAddress> addressList);

  /**
   * 根据地址id获取地址
   * @param addressId
   * @return
   */
  LogisticsAddress getByAddressId(Long addressId);

  /**
   * 删除地址
   * @param address
   */
  void deleteAddress(LogisticsAddress address);

  /**
   * 批量保存物流服务车型
   * @param truckList
   */
  void batchSaveTruck(List<LogisticsTruck> truckList);

  /**
   * 批量修改物流服务车型
   * @param truckList
   */
  void batchModifyTruck(List<LogisticsTruck> truckList);

  /**
   * 删除车型
   * @param
   */
  void deleteTruck(LogisticsTruck truck);

  /**
   * 根据车型id查询车型
   * @param truckId
   * @return
   */
  LogisticsTruck getByTruckId(Long truckId);
  /**
   * 根据物流id获取地址列表
   * @param logisticsId
   * @return
   */
  List<LogisticsAddressVo> getAddressListById(Long logisticsId);

  /**
   * 根据物流id获取服务服务车型列表
   * @param logisticsId
   * @return
   */
  List<LogisticsTruckVo> getTruckListById(Long logisticsId);
}
